/**
 * 通过坐标轴修改点坐标功能类demo案例
 */

import * as Cesium from "cesium";
import * as EasyCesium from "@xhymf1992/easy-cesium";

export function functionEditPositionWithCoordAxis() {

    //--------step1: 创建已有管道----------//
    let positions = [
        Cesium.Cartesian3.fromDegrees(120, 30, 1000),
        Cesium.Cartesian3.fromDegrees(120.02, 30, 1000),
        Cesium.Cartesian3.fromDegrees(120.02, 30.02, 500),
    ]
    let pipOptions = {
        id: "pip-entity", // entity对象id，具有唯一性，必填
        name: "pip-entity", // entity的名称，可选，默认为空
        show: true, // 是否显示，可选，默认显示
        positions: positions, // 管道中心线几何数据，必填
        color: "rgba(0,255,255,0.9)", // 管道颜色，可选，默认白色
        shape: 1, // 截面类型：0-圆形；1-矩形；2-拱形；3-三心拱。可选，默认为0
        circleRadius: 100, // 圆形半径，截面类型为圆形时起作用，可选，默认为100
        rectWidth: 100, // 矩形宽度，截面类型为矩形、拱形、三心拱时起作用，可选，默认为100
        rectHeight: 100, // 矩形高度，截面类型为矩形、拱形、三心拱时起作用，可选，默认为100
        archHeight: 40, // 拱高，截面类型为拱形、三心拱时起作用，可选，默认为40
        cornerType: 1, // 拐角形态：0-圆形；1-直角；2-斜边。可选，默认为0
        constant: false, // 是否是静态的，可选，默认为是，当为false时，参数变为时变类型，适用于经常变化的情况
        viewer: window.viewer // cesium视图对象，必填
    };

    // @ts-ignore
    window.pip = new EasyCesium.PipEntity(pipOptions);
    //@ts-ignore
    window.pip.init();
    //@ts-ignore
    window.pip.flyTo();



    //-----------------step2：设置需要编辑的点索引，这一步由业务层设计实现，如可给个点列表让用户选-----------------------//

    let selectedIndex = 1;



    //-----------------step3：启动通过坐标轴编辑点位置的功能函数-----------------------------------------//
    // 定义坐标变化后的回调函数(第一个参数为改变后的坐标，系统自动传入)
    function callbackFuncForPositionChanged(movePosition: Cesium.Cartesian3) {
        positions[selectedIndex] = movePosition; // 因为pip为非constant模式，且传入的positions是引用，所以positions变化会自动引起视图的变化
    }

    let funcOptions = {
        position: positions[selectedIndex], // 要编辑的点坐标，必填
        moveSpeedFactor: 1.0, // 移动速度的比例，用于控制速度，可选，默认为1
        coordAxisLength: 1000, // 坐标轴的长度，可选，默认为500
        coordAxisWidth: 10, // 坐标轴的宽度，可选，默认为10
        coordAxisWidthSelected: 20, // 坐标轴选中时的宽度，可选，默认为20
        callbackFuncForPositionChanged: callbackFuncForPositionChanged, // 坐标变化后的回调函数(第一个参数为改变后的坐标)，可选，默认为空
        pickedPointShow: false, // 是否显示点中的点，可选，默认为true

        viewer: window.viewer // cesium视图对象，必填
    };

    /**
     * 操做说明：
     * 单击左键：选择坐标轴，选中后坐标轴变粗，一次只能选中一条
     * 移动鼠标+按住alt：沿选中的坐标轴移动点
     */
    //@ts-ignore
    window.func = new EasyCesium.FunctionEditPositionWithCoordAxis(funcOptions);

    //@ts-ignore
    window.func.init();

    // // 销毁func
    ////@ts-ignore
    // window.func.destroy();

}